A semiconductor device uses various reference voltages to discriminate logic levels of inputted data or internal signals. It is important to correctly establish these reference voltages because these voltages serve as absolute values for discriminating the logic levels of data and internal signals. Further, these reference voltages are important because they are used to check level ranges for error checking data and internal signals.
Recently in the semiconductor field, a technique for training reference voltages includes finding a range of reference voltages which allow for normal operations. Reference voltage training is implemented such that the levels of a reference voltage are set according to a combination of code signals preset in a mode register set (MRS). Write and read operations are then performed according to the reference voltage set by the reference voltage training. Accordingly, in reference voltage training, code signals may have n bits, because there may be 2n code signals, a reference voltage is set to 2n different levels, and the write and read operations are performed 2n times.
In the conventional reference voltage training, write and read operations are performed based on the number of combinations of the code signals. Consequently, as the number of bits increases, a time and an amount of current required for the reference voltage training increases in a geometrical progression.